home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / net / chatwins.lzh / fnckey.c < prev    next >
C/C++ Source or Header  |  1993-05-10  |  1KB  |  78 lines

  1. /*    Copyright 1993 H.Ogasawara (COR.)    */
  2.  
  3. #include    <corlib.h>
  4.  
  5. extern int    Exec();
  6. char        fnckeylst[20][42];
  7.  
  8. static inline
  9. send_1char( wp, ch )
  10. WindowID    wp;
  11. {
  12.     EventInfo    dummy;
  13.     dummy.option= EventKey;
  14.     dummy.ShiftStat= 0;
  15.     dummy.KeyCode= ch;
  16.     Exec( wp, &dummy );
  17. }
  18.  
  19. keyinput( wp, code )
  20. WindowID    wp;
  21. {
  22.     unsigned char    *ptr= (unsigned char*)(fnckeylst[code]);
  23.     for(; *ptr ; send_1char( wp, *ptr++ ) );
  24. }
  25.  
  26. makestr( str, ptr )
  27. unsigned char    *str, *ptr;
  28. {
  29.     int    kanji= FALSE;
  30.     for(; *ptr ; ptr++ ){
  31.         if( kanji ){
  32.             kanji= FALSE;
  33.             *str++= *ptr;
  34.         }else switch( *ptr ){
  35.         case '\\':
  36.             switch( *++ptr ){
  37.             case 'n':
  38.                 *str++= '\n';
  39.                 break;
  40.             case 'r':
  41.                 *str++= '\r';
  42.                 break;
  43.             case 'x':
  44.                 *str= (((*ptr>'9' ? *ptr-7 : *ptr)&15)<<8)+
  45.                     ((ptr[1]>'9' ? ptr[1]-7: ptr[1])&15);
  46.                 ptr++;
  47.                 break;
  48.             default:
  49.                 *str++= *ptr;
  50.             }
  51.             break;
  52.         case '\n':
  53.         case '\r':
  54.             break;
  55.         default:
  56.             if( (*ptr>=0x80&&*ptr<0xa0) || (*ptr>=0xe0) )
  57.                 kanji= TRUE;
  58.             *str++= *ptr;
  59.         }
  60.     }
  61.     *str= '\0';
  62. }
  63.  
  64. read_fncfile( name )
  65. char    *name;
  66. {
  67.     FILE    *fp;
  68.     if( fp= fopen( name, "r" ) ){
  69.         int    i= 0;
  70.         char    buf[42];
  71.         for(; i < 20 && fgets( buf, 40, fp ) ; i++ )
  72.             makestr( fnckeylst[i], buf );
  73.         fclose( fp );
  74.         return    TRUE;
  75.     }
  76.     return    FALSE;
  77. }
  78.